package com.carter.springframework.context.annotation;

import com.carter.springframework.context.ResourceLoaderAware;
import com.carter.springframework.context.index.CandidateComponentsIndex;
import com.carter.springframework.core.env.Environment;
import com.carter.springframework.core.env.EnvironmentCapable;
import com.carter.springframework.core.io.support.ResourcePatternResolver;
import com.carter.springframework.core.type.classreading.MetadataReaderFactory;
import com.carter.springframework.core.type.filter.TypeFilter;
import com.sun.istack.internal.Nullable;

import java.util.LinkedList;
import java.util.List;

public class ClassPathScanningCandidateComponentProvider implements EnvironmentCapable, ResourceLoaderAware {
    static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";

    private String resourcePattern = DEFAULT_RESOURCE_PATTERN;

    private final List<TypeFilter> includeFilters = new LinkedList<>();

    private final List<TypeFilter> excludeFilters = new LinkedList<>();

    @Nullable
    private Environment environment;

    @Nullable
    private ConditionEvaluator conditionEvaluator;

    @Nullable
    private ResourcePatternResolver resourcePatternResolver;

    @Nullable
    private MetadataReaderFactory metadataReaderFactory;

    @Nullable
    private CandidateComponentsIndex componentsIndex;

    @Override
    public Environment getEnvironment() {
        return null;
    }
}
